//
//  GAKKIBaseAlertController.h
//  GANGAIKit
//
//  Created by fh on 2019/11/15.
//  Copyright © 2019 cashchina. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "GAKKIConfig.h"
@class GAKKIBaseAlertController;

NS_ASSUME_NONNULL_BEGIN

/**
 事件操作回调
 
 @param action 事件
 */
typedef void(^ActionHandler)(UIAlertAction *action);

/**
 事件操作回调
 
 @param textField textField控件
 */
typedef void (^TextFieldHandler)(UITextField *textField);

/**
 添加动作属性定义
 
 @param actionTitle 标题
 @param actionStyle 样式
 @param actionHandler 事件
 @return 返回的alertController
 */
typedef GAKKIBaseAlertController * _Nullable (^AddCustomAction) (NSString* actionTitle, UIAlertActionStyle actionStyle, ActionHandler actionHandler);

/**
 添加textField属性定义
 
 @param textFieldAction textFieldAction动作
 @return 返回的alertController
 */
typedef GAKKIBaseAlertController * _Nullable (^AddTextFieldAction) (TextFieldHandler textFieldAction);

/// 基类弹框控制器
@interface GAKKIBaseAlertController : UIAlertController
/** 用户交互动作属性 */
@property (nonatomic, copy, readonly) AddCustomAction addAction;
/** 封装系统添加TextField回调 */
@property (nonatomic, copy, readonly) AddTextFieldAction addTextField;

/**
 工厂类方法
 
 @param title 标题
 @param massage 描述信息
 @param preferredStyle 控制器样式
 @param block 回调控制器供增加动作操作
 @return alertController结果控制器
 */
+ (GAKKIBaseAlertController *)gg_makeAlertControllerWithTitle:(NSString * _Nullable)title message:(NSString * _Nullable)massage style:(UIAlertControllerStyle)preferredStyle primaryAlertController:(void(^)(GAKKIBaseAlertController *alertController))block;

@end

NS_ASSUME_NONNULL_END
